home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1997 #3 / Amiga Plus CD - 1997 - No. 03.iso / pd / programmierung / alienbreed3d2_src / cheesesauce / fall.s < prev    next >
Text File  |  1997-01-31  |  5KB  |  371 lines

  1.  
  2. PLR1_fall
  3.  move.l PLR1s_tyoff,d0
  4.  move.l PLR1s_yoff,d1
  5.  move.l PLR1s_yvel,d2
  6.  
  7.  cmp.l d1,d0
  8.  bgt .aboveground
  9.  beq.s .onground
  10.  
  11.  st SLOWDOWN
  12.  
  13. ; we are under the ground.
  14.  
  15. ; move.l #0,d2
  16.  sub.l d1,d0
  17.  cmp.l #-512,d0
  18.  bge.s .notoobig
  19.  move.l #-512,d0
  20. .notoobig:
  21.  add.l d0,d1
  22.  
  23.  bra CARRYON
  24.  
  25. .onground:
  26.  move.w PLR1_FloorSpd,d2
  27.  ext.l d2
  28.  asl.l #6,d2
  29.  
  30.  move.l #PLR1_Obj,a4
  31.  move.w DAMAGEWHENHIT,d3
  32.  sub.w #100,d3
  33.  ble.s .nodam
  34.  add.b d3,damagetaken(a4)
  35. .nodam
  36.  
  37.  st SLOWDOWN
  38.  move.w #0,DAMAGEWHENHIT
  39.  
  40.  move.w ADDTOBOBBLE,d3
  41.  move.w d3,d4
  42.  add.w PLR1_bobble,d3
  43.  and.w #8190,d3
  44.  move.w d3,PLR1_bobble
  45.  add.w PLR1_clumptime,d4
  46.  move.w d4,d3
  47.  and.w #4095,d4
  48.  move.w d4,PLR1_clumptime
  49.  and.w #-4096,d3
  50.  beq.s .noclump
  51.  
  52.  bsr PLR1clump
  53.  
  54. .noclump
  55.  
  56.  
  57.  move.l #-1024,JUMPSPD
  58.  
  59.  move.l PLR1_Roompt,a2
  60.  move.l ToZoneWater(a2),d0
  61.  cmp.l d0,d1
  62.  blt.s .notinwater
  63.  
  64.  move.l #-512,JUMPSPD
  65.  
  66. .notinwater:
  67.  
  68.  tst.w PLAYERONEHEALTH
  69.  ble.s .nothrust
  70.  
  71.  move.l #KeyMap,a5
  72.  moveq #0,d7
  73.  move.b jump_key,d7
  74.  tst.b (a5,d7.w)
  75.  beq.s .nothrust
  76.  move.l JUMPSPD,d2
  77. .nothrust:
  78.  
  79.  tst.l d2
  80.  ble.s .nodown
  81.  
  82.  moveq #0,d2
  83. .nodown:
  84.  add.l d2,d1
  85.  bra CARRYON
  86.  
  87. .aboveground
  88.  
  89.  clr.b SLOWDOWN
  90.  move.l d0,d3
  91.  sub.l d1,d3
  92.  cmp.l #16*64,d3
  93.  bgt.s .nonearmove
  94.  
  95.  st SLOWDOWN
  96.  
  97. .nonearmove:
  98.  
  99.  
  100. ; need to fall down (possibly).
  101.  
  102.  add.l d2,d1
  103.  cmp.l d1,d0
  104.  bgt.s .stillabove
  105.  
  106.  move.w DAMAGEWHENHIT,d3
  107.  sub.w #100,d3
  108.  ble.s .nodam2
  109.  move.l PLR1_Obj,a4
  110.  add.b d3,damagetaken(a4)
  111. .nodam2
  112.  move.w #0,DAMAGEWHENHIT
  113.  
  114.  move.w PLR1_FloorSpd,d2
  115.  ext.l d2
  116.  asl.l #6,d2
  117.  
  118.  bra CARRYON
  119.  
  120. .stillabove:
  121.  add.l #64,d2
  122.  add.w #1,DAMAGEWHENHIT
  123.  
  124.  move.l PLR1_Roompt,a2
  125.  move.l ToZoneWater(a2),d0
  126.  cmp.l d0,d1
  127.  blt.s CARRYON
  128.  st SLOWDOWN
  129.  move.w #0,DAMAGEWHENHIT
  130.  cmp.l #512,d2 
  131.  blt.s CARRYON 
  132.  move.l #512,d2     ; reached terminal velocity.
  133. CARRYON:
  134.  
  135.  move.l PLR1_Roompt,a2
  136.  move.l ToZoneRoof(a2),d3
  137.  tst.b PLR1_StoodInTop
  138.  beq.s .okbot
  139.  move.l ToUpperRoof(a2),d3
  140. .okbot:
  141.  
  142.  add.l #10*256,d3
  143.  cmp.l d1,d3
  144.  blt.s .okroof
  145.  move.l d3,d1
  146.  tst.l d2
  147.  bge.s .okroof
  148.  moveq #0,d2
  149. .okroof:
  150.  
  151.  move.l d2,PLR1s_yvel
  152.  move.l d1,PLR1s_yoff
  153.  
  154.  rts
  155.  
  156. ARSE:
  157.  
  158.  sub.l d1,d0
  159.  slt.s CANJUMP
  160.  bgt.s .aboveground
  161.  beq.s .notfast
  162.  sub.l #512,d2
  163.  blt.s .notfast
  164.  move.l #0,d2
  165. .notfast:
  166.  add.l d2,d1
  167.  sub.l d2,d0
  168.  blt.s .pastitall
  169.  move.l #0,d2
  170.  move.l PLR1s_tyoff,d1
  171.  bra.s .pastitall
  172.  
  173. .aboveground:
  174.  add.l d2,d1
  175.  add.l #64,d2
  176.  
  177.  move.l #-1024,JUMPSPD
  178.  
  179.  move.l PLR1_Roompt,a2
  180.  move.l ToZoneWater(a2),d0
  181.  cmp.l d0,d1
  182.  blt.s .pastitall
  183.  
  184.  move.l #-512,JUMPSPD
  185.  cmp.l #256*2,d2
  186.  blt.s .pastitall
  187.  move.l #256*2,d2
  188.  
  189. .pastitall:
  190.  
  191.  move.l d2,PLR1s_yvel
  192.  move.l d1,PLR1s_yoff
  193.  
  194.  move.l #KeyMap,a5
  195.  tst.b $1d(a5)
  196.  beq.s nothrust2
  197.  tst.b CANJUMP
  198.  beq.s nothrust2
  199.  move.l JUMPSPD,PLR1s_yvel
  200. nothrust2:
  201.  
  202.  move.l PLR1_Roompt,a5
  203.  move.l ToZoneRoof(a5),d0
  204.  tst.b PLR1_StoodInTop
  205.  beq.s .usebottom
  206.  move.l ToUpperRoof(a5),d0
  207. .usebottom:
  208.  
  209.  move.l PLR1s_yoff,d1
  210.  move.l PLR1s_yvel,d2
  211.  
  212.  sub.l PLR1s_height,d1
  213.  sub.l #5*256,d1
  214.  cmp.l d1,d0
  215.  blt.s .notinroof
  216.  move.l d0,d1
  217.  tst.l d2
  218.  bge.s .notinroof
  219.  moveq #0,d2
  220. .notinroof
  221.  add.l #5*256,d1
  222.  add.l PLR1s_height,d1
  223.  move.l d1,PLR1s_yoff
  224.  
  225.  move.l d2,PLR1s_yvel
  226.  
  227.  rts
  228.  
  229. PLR2_fall
  230.  move.l PLR2s_tyoff,d0
  231.  move.l PLR2s_yoff,d1
  232.  move.l PLR2s_yvel,d2
  233.  
  234.  cmp.l d1,d0
  235.  bgt .aboveground
  236.  beq.s .onground
  237.  
  238.  st SLOWDOWN
  239. ; we are under the ground.
  240.  
  241.  move.l #0,d2
  242.  sub.l d1,d0
  243.  cmp.l #-512,d0
  244.  bge.s .notoobig
  245.  move.l #-512,d0
  246. .notoobig:
  247.  add.l d0,d1
  248.  
  249.  bra CARRYON2
  250.  
  251. .onground:
  252.  
  253.  move.w DAMAGEWHENHIT,d3
  254.  sub.w #100,d3
  255.  ble.s .nodam
  256.  move.l PLR2_Obj,a4
  257.  add.b d3,damagetaken(a4)
  258. .nodam
  259.  move.w #0,DAMAGEWHENHIT
  260.  
  261.  st SLOWDOWN
  262.  
  263.  move.w ADDTOBOBBLE,d3
  264.  move.w d3,d4
  265.  add.w PLR2_bobble,d3
  266.  and.w #8190,d3
  267.  move.w d3,PLR2_bobble
  268.  add.w PLR2_clumptime,d4
  269.  move.w d4,d3
  270.  and.w #4095,d4
  271.  move.w d4,PLR2_clumptime
  272.  and.w #-4096,d3
  273.  beq.s .noclump
  274.  
  275.  bsr PLR2clump
  276.  
  277. .noclump
  278.  
  279.  move.l #-1024,JUMPSPD
  280.  
  281.  move.l PLR2_Roompt,a2
  282.  move.l ToZoneWater(a2),d0
  283.  cmp.l d0,d1
  284.  blt.s .notinwater
  285.  
  286.  move.l #-512,JUMPSPD
  287.  
  288. .notinwater:
  289.  
  290.  tst.w PLAYERTWOHEALTH
  291.  ble.s .nothrust
  292.  move.l #KeyMap,a5
  293.  moveq #0,d7
  294.  move.b jump_key,d7
  295.  tst.b (a5,d7.w)
  296.  beq.s .nothrust
  297.  move.l JUMPSPD,d2
  298. .nothrust:
  299.  
  300.  tst.l d2
  301.  ble.s .nodown
  302.  
  303.  moveq #0,d2
  304. .nodown:
  305.  add.l d2,d1
  306.  bra CARRYON2
  307.  
  308. .aboveground
  309.  
  310.  clr.b SLOWDOWN
  311. ; need to fall down (possibly).
  312.  
  313.  add.l d2,d1
  314.  cmp.l d1,d0
  315.  bgt.s .stillabove
  316.  
  317.  move.w DAMAGEWHENHIT,d3
  318.  sub.w #100,d3
  319.  ble.s .nodam2
  320.  move.l PLR2_Obj,a4
  321.  add.b d3,damagetaken(a4)
  322. .nodam2
  323.  move.w #0,DAMAGEWHENHIT
  324.  
  325.  move.l #0,d2
  326.  bra CARRYON2
  327.  
  328. .stillabove:
  329.  add.l #64,d2
  330.  
  331.  add.w #1,DAMAGEWHENHIT
  332.  
  333.  move.l PLR2_Roompt,a2
  334.  move.l ToZoneWater(a2),d0
  335.  cmp.l d0,d1
  336.  blt.s CARRYON2
  337.  st SLOWDOWN
  338.  move.w #0,DAMAGEWHENHIT
  339.  
  340.  cmp.l #512,d2
  341.  blt.s CARRYON2
  342.  
  343.  move.l #512,d2 
  344.  
  345. CARRYON2:
  346.  
  347.  move.l PLR2_Roompt,a2
  348.  move.l ToZoneRoof(a2),d3
  349.  tst.b PLR2_StoodInTop
  350.  beq.s .okbot
  351.  move.l ToUpperRoof(a2),d3
  352. .okbot:
  353.  
  354.  add.l #10*256,d3
  355.  cmp.l d1,d3
  356.  blt.s .okroof
  357.  move.l d3,d1
  358.  tst.l d2
  359.  bge.s .okroof
  360.  moveq #0,d2
  361. .okroof:
  362.  
  363.  move.l d2,PLR2s_yvel
  364.  move.l d1,PLR2s_yoff
  365.  
  366.  rts
  367.  
  368. CANJUMP: dc.w 0
  369. JUMPSPD: dc.l 0
  370. SLOWDOWN: dc.w 0
  371. DAMAGEWHENHIT: dc.w 0